

var dataTable = null;	// 表格

/***** 表格表头配置 up ******/

var columnArr = [
	{
		"orderable": false,
		"data": null,
		'width':15,
		"render" : function(data, type, row) {
				return '<div class="radio-custom radio-primary">'+
								'<input id="inputRadioPrimary" name="id" value="' + data.id + '" type="radio">'+
								'<label></label>'+
						'</div>'
		}
	},
	{
		"class": 'details-control text-center text-middle',
		"orderable": false,
		"data": null,
		'width':43,
		"defaultContent": ''
	}
]
var checkboxFlag = false;	// 表格是否多选框
var column;

/***** 表格表头配置 end ******/

TABLE = {
		
		setCheckbox: function(flag){
			checkboxFlag = flag;
			if (checkboxFlag){
				columnArr = [
					{
						"orderable": false,
						"data": null,
						'width':20,
						"render" : function(data, type, row) {
								return '<div class="checkbox-custom checkbox-primary">'+
												'<input id="inputRadioPrimary" name="id" value="' + data.id + '" type="checkbox">'+
												'<label></label>'+
										'</div>'
						}
					},
					{
						"class": 'details-control text-center text-middle',
						"orderable": false,
						"data": null,
						'width':50,
						"defaultContent": ''
					}
				]
			}
		},
		init: function(tableAjaxUrl, arr){	
			try{
				if (tableAjaxUrl == ''){
					layer.msg("dataTable请求地址不能为空！");
					return ;
				};
				if (arr.length == 0){
					layer.msg("column不能为空！");
					return ;
				}
				
				column = $.merge(columnArr,arr);
			}catch(e){
				layer.msg("dataTable请求地址未定义！");
				return;
			}
			
			// JSONP数据源:JSONP 是允许从任何服务器使用 JSON 数据的几种方法之一
			//（浏览器具有XSS保护规则，出于安全原因，将阻止标准 Ajax 请求远程资源）。
			// 可使用 ajax 的 dataType，将其设为 JSONP，使 DataTable 从任何域加载服务器端源数据
			dataTable = $('#dataTable').DataTable({
				// "scrollY":"80vh", // 垂直滚动高度,vh代表百分比，也可用px等
				"processing": true,
				"serverSide": true,
				"searching": false,
				"ordering": false,	// 禁止排序
				"responsive": true,
				// 官方文档：Options-dom；自定义布局
				"dom": '<"row"<"col-sm-2"l><"col-sm-10" <"#searchDiv.dataTables_length">>>rt<"row"<"col-sm-3"i><"col-sm-9"p>>',
				"ajax": {
				    "url": tableAjaxUrl,
				    "data": function (d) {
						    //删除多余请求参数
						    for(var key in d){
							   if(key.indexOf("columns")==0||key.indexOf("order")==0||key.indexOf("search")==0){ //以columns开头的参数删除
								   delete d[key];
							   }
						    }
							 // 搜索参数{对应下方搜索表单里的内容}
							 var searchParams= $('#search-form').serializeArray();
							 var params = {};
							 for (var item in searchParams) {
										params[searchParams[item].name] = searchParams[item].value;
							 }
						   //附加查询参数
						   if(searchParams){
							   $.extend(d,params); //给d扩展参数
						   }
				   }
				},
				// 配置数据栏目，第一列为自增id
				"columns": column,
		        // 显示自增id
				"fnDrawCallback": function(){
			        　　let api = this.api();
				        let startIndex = api.context[0]._iDisplayStart;//获取本页开始的条数
				        api.column(1).nodes().each(function(cell, i) {
				            cell.innerHTML = startIndex + i + 1;
				    });
			    },
			    "initComplete": function () {
			       
			       try {
			    	    if (typeof(eval('tableComplete')) == "function") {
			    	    	tableComplete();
			    	    }
			    	} catch(e) {}
			    }
			});
			// 加载自定义搜索表单
			if ($('#searchHtml')) {
				$("#searchDiv").html($('#searchHtml').html()); 	// 自定义工具栏
			}
			 
			// 点击行设置单选框选中
			$('#dataTable tbody').on('click', 'tr', function () {
				if(checkboxFlag){
					// 取消选中
					$(this).removeClass('info');
					if($(this).find('input[type="checkbox"]').prop("checked")){
						$(this).find('input[type="checkbox"]').prop('checked','');
						return ;
					}	 
					// 选中
					$(this).find('input[type="checkbox"]').prop('checked','checked');
					$(this).addClass('info');
					return ;
				}
				// 取消选中
				$('#dataTable tbody tr').removeClass('info');
				if($(this).find('input[type="radio"]').prop("checked")){
					$(this).find('input[type="radio"]').prop('checked','');
					return ;
				}	 
				// 选中
				$(this).find('input[type="radio"]').prop('checked','checked');
				$(this).addClass('info');
			});
			$('#chaeckAll').click(function(){
				if($(this).prop("checked")){
					$('#dataTable tbody').find('input[type="checkbox"]').prop('checked','checked');
				} else {
					$('#dataTable tbody').find('input[type="checkbox"]').prop('checked','');
				}
			});
		}
}
		
		/******** 操作按钮回调函数 *******/
		
		
		/**
		 * 通用的删除
		 */
		function layer_del(url){
					
			var id = getCheckId();
			if(!id || id == null){
				layer.msg("请选择一条记录！");
				return ;
			}		
			layer.confirm('确认删除?', function(index){
				$.ajax({
					type: "POST",
				    url: baseURL + url,
                    data: "id=" + getCheckId(),
				    success: function(r){
						if(r.code == 0){
							delCheckRow();
							layer.msg('删除成功');
						}else{
							layer.alert(r.msg);
						}
					}
				});
				layer.close(index);
			});       
		}
		
		/**
		 * 删除选中的行
		 */
		function delCheckRow(){
			
			$('.table input[type="radio"]:checked').parents("tr").remove();
		}
		/**
		 * 全选
		 */
		$('#checkedAll').click(function(){
			if(checkboxFlag){
				if($(this).prop("checked")){
					$('#dataTable tbody').find('input[type="checkbox"]').prop('checked','checked');
					return ;
				}
				$('#dataTable tbody').find('input[type="checkbox"]').prop('checked','');
			}
		});
		
		/**
		 * 判断是否选中一行
		 * @returns
		 */
		function checkSelect() {
			
			if (checkboxFlag) {
				return $('.table input[type="checkbox"]:checked').length > 0;
			}
			return $('.table input[type="radio"]:checked').length > 0;
		}
		
		/**
		 * 获取选中行id
		 */
		function getCheckId(){
			
			// 复选框
			if (checkboxFlag) {
				var ids = $('.table input[type="checkbox"]:checked').map(function(index,elem) {
		            return $(elem).val();
		        }).get().join(',');
				return ids;
			}
			var id = $('.table input[type="radio"]:checked').val();
			return id;
		}
		
		/**
		 * 获取选中行数据
		 * @returns
		 */
		function getRowData(){
			// 未选中
			if (!checkSelect()) {
				return null;
			}
			// 复选框
			if (checkboxFlag) {
				var rows = new Array();
				$('.table input[type="checkbox"]:checked').map(function(index,elem) {
		            if($(elem).attr('id') != "chaeckAll"){
		            	var tr = $(elem).parents("tr");
			            rows.push(dataTable.row(tr).data());
		            }
		        });
				return rows;
			}
			var obj = $('.table input[type="radio"]:checked').parents("tr");
			var row = dataTable.row(obj).data();
			return row;
		}
		
		/******** 搜索 ********/
		function search(flag){
			dataTable.ajax.reload(null, flag); // 刷新表格数据，重置（默认或者设置为true）或者保持分页信息（设置为false）
		}
		
		function reload(url){
			dataTable.ajax.url(url).load();
		}
		
		